package main

import (
	"crypto/sha256"
	"encoding/hex"
	"encoding/json"
	"fmt"
)

// 创建一个类Egg，属性包括鸡蛋的颜色、长度、质量、下蛋日期、编号，写三个方法：

// （1）设置鸡蛋对象的颜色、长度、质量、下单日期；

// （2）设置鸡蛋对象的编号；

// （3）计算并返回鸡蛋对象的json字符串。

// 在main主函数中，创建三个对象，分别设置其属性；再设置一个map对象，其key是该鸡蛋json经sha256散列的结果，
//其value是对应鸡蛋的json；遍历该map，依次输出每个鸡蛋的key和value。
type Egg struct {
	C  string
	L  string
	Q  string
	D  string
	Id string
}

func (e *Egg) Set(c string, l string, q string, d string) {
	e.C = c
	e.L = l
	e.Q = q
	e.D = q
}

func (e *Egg) SetId(id string) {
	e.Id = id
}

func (e *Egg) TOJson() string {
	json, _ := json.Marshal(e)
	return (string(json))
}

func main() {
	var egg1, egg2 Egg
	m := make(map[string]string)
	egg1.SetId("1")
	egg2.SetId("2")
	egg1.Set("r", "5", "50", "2021-1-01")
	egg2.Set("w", "5", "40", "2021-1-012")
	k1 := sha256.Sum256([]byte(egg1.TOJson()))
	k11 := hex.EncodeToString(k1[:])
	k2 := sha256.Sum256([]byte(egg2.TOJson()))
	k12 := hex.EncodeToString(k2[:])
	m[k11] = egg1.TOJson()
	m[k12] = egg2.TOJson()
	for k, v := range m {
		fmt.Println(k, v)
	}

}
